// IInstantAssist.aidl
package com.zntech.app.common;
import  com.zntech.app.common.accessibility.bean.InstantAssistText;
import  com.zntech.app.common.accessibility.bean.AssistSiblingResult;
import  com.zntech.app.common.shell.ShellResult;

interface IInstantAssist {
    /**
    * 获取当前页面所有带文字的区域
    */
    List<InstantAssistText> getPageText(in Rect limit);

    /**
    * 根据指定条件查找区域，返回第一个匹配结果
    */
    Rect findByText(String text);
    Rect findById(String id);

    /**
    * 根据指定条件查找区域，所有结果
    */
    List<Rect> findAllByText(String text);
    List<Rect> findAllById(String id);

    /**
    * 获取当前页面的所有节点信息
    */
    List<InstantAssistText> getPageInfo();

    /**
    * 根据指定区域内查找所有包含的id项，
    * @param isIntersection 指定区域是否为交集
    */
    List<InstantAssistText> getPageInfoByIds(in Rect limit,
                                             in List<String> ids,
                                             in boolean isIntersection);

    /**
     * 根据指定区域内查找所有符合条件的id项，需要指定id项的兄弟节点
     * @param mainId 主id
     * @param siblingIds 兄弟id项
     * @param isIntersection 指定区域是否为交集
    */
    List<AssistSiblingResult> findAllByIdAndSiblingIds(in Rect limit,
                                                     in String mainId,
                                                     in List<String> siblingIds,
                                                     in boolean isIntersection);

    /**
     * 粘贴文本至控件
     * @param x,y 指定坐标 （会根据指定坐标找到id）
    */
    boolean pasteText(in String text, in float x, in float y);

    boolean pasteTextById(in String text, in String viewId);

    /**
    * 执行shell命令
    */
    ShellResult execShell(in String cmd);
}